perm filename EX3.SAI[SAI,BGB] blob sn#140818 filedate 1975-01-22 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00002 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	BEGIN "EXAMPLE THREE"
C00005 ENDMK
C⊗;
BEGIN "EXAMPLE THREE"
	REQUIRE "ABBREV[SYS,BGB]" SOURCE_FILE;
	REQUIRE "GEOMES.HDR[SAI,BGB]" SOURCE_FILE;
	INTEGER I,B0,B1,B2,C;
	REAL X,Y,Z,U,V,W;
α SEQUENCE GENERATOR - S(X) = (137*X + 187)MOD 256 = (137*X - 69)MOD 256;
	SAFE SIMPLE INTEGER PROCEDURE S(INTEGER X);
	START_CODE
		DEFINE P="'17";
		MOVE 1,-1(P);IMULI 1,137;ADDI 1,187;
		ANDI 1,'377;POP P,-1(P);POPJ P,;
	END;	

α INITIALIZE GEOMED & THE PROTOTYPE OBJECT;
	MKUNIV;
α	C ← SON(SON(UNIVERSE));		α FETCH NOW CAMERA;
α	ROTATE(C,-π/3,π/2,0);
α	B0 ← MKCUBE(8,8,8);
α	GEOMED;

α	SHOW2(0,0);
α	PLOTO("X0");
α	KLBFEV(B0);
	B0 ← MKCUBE(.2,.2,.2);

α PLACE 256 OBJECTS INTO THE 8 FOOT CUBE OF SPACE IMMEDIATELY IN VIEW OF THE CAMERA;
	U←30.49; V←-69.2; W←-43.25;
	FOR I←0 THRU 255 DO
BEGIN
	B1 ← (IF I=255 THEN B0 ELSE MKCOPY(B0));
	X ← (I - 128)/32;
	Y ← (S(I) - 128)/32;
	Z ← (S(S(I)) - 128)/32;
α	IF (X-4)*U+(Y-4)*V+(Z+4)*W ≤ 0 THEN KLBFEV(B1) ELSE; TRANSL(B1,X,Y,Z);
	IF I=0 THEN B2←B1 ELSE BATT(B1,B2);
END;
	OUTB3D("DEK",B2);
α CREATE PLOT FILES OF THE OBJECTS VIEWED FROM VARIOUS CAMERA POSITIONS;
α	SHOW2(0,0);
α	PLOTO("X6");
END "EXAMPLE THREE";